{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "1012c435",
   "metadata": {},
   "source": [
    "# 第6章 数据建模：无监督学习\n",
    "## 6.1无监督学习概述\n",
    "## 6.2 主成分分析\n",
    "### 6.2.1主成分分析算法思想\n",
    "### 6.2.2 主成分分析案例实践"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "ffb0f35c-a947-4253-afeb-9c8766217e5b",
   "metadata": {},
   "outputs": [],
   "source": [
    "import pandas as pd\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "from mpl_toolkits.mplot3d import Axes3D\n",
    "plt.rcParams['font.sans-serif'] = ['SimHei']\n",
    "plt.rcParams['axes.unicode_minus'] = False\n",
    "from sklearn.model_selection import train_test_split#用于数据集划分\n",
    "from sklearn.metrics import mean_squared_error, r2_score#性能度量指标计算模块\n",
    "from sklearn.preprocessing import StandardScaler#数据标准化模块\n",
    "from sklearn.linear_model import LinearRegression#线性回归模型模块\n",
    "from sklearn.decomposition import PCA\n",
    "from factor_analyzer import FactorAnalyzer"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "cff077e7-94f7-4778-a359-53f384de7809",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "首日交易股数(股)          1\n",
      "发行价格(元)            0\n",
      "每股面值(元)            3\n",
      "总发行规模(股)           6\n",
      "公开招股数量(股)         19\n",
      "招股价格(元)         2853\n",
      "发行前每股净资产(元)      132\n",
      "发行前每股收益(元)       329\n",
      "实际发行总量(股)          5\n",
      "每股发行费用(元)        201\n",
      "公司招股时注册资本(元)      22\n",
      "dtype: int64\n",
      "(4855, 9)\n",
      "Index(['首日交易股数(股)', '发行价格(元)', '每股面值(元)', '总发行规模(股)', '公开招股数量(股)',\n",
      "       '发行前每股净资产(元)', '实际发行总量(股)', '每股发行费用(元)', '公司招股时注册资本(元)'],\n",
      "      dtype='object')\n"
     ]
    }
   ],
   "source": [
    "#读入数据\n",
    "data = pd.read_excel('IPO数据.xlsx')\n",
    "data.head()#数据预览\n",
    "# 查看各列缺失值情况\n",
    "missing_values = data.isnull().sum()\n",
    "print(missing_values)\n",
    "#缺失值处理\n",
    "data_cleaned = data.dropna(thresh=len(data)-300, axis=1)\n",
    "data_cleaned = data_cleaned.dropna()\n",
    "print(data_cleaned.shape)#查看数据维度\n",
    "print(data_cleaned.columns)#查看变量名\n",
    "# 将数据分为特征和标签\n",
    "X = data_cleaned.drop(columns=['首日交易股数(股)'])\n",
    "y = data_cleaned['首日交易股数(股)']\n",
    "#数据标准化\n",
    "scaler = StandardScaler()\n",
    "X_scaled = scaler.fit_transform(X)\n",
    "#数据集划分\n",
    "X_train, X_test, y_train, y_test = train_test_split(X_scaled, y, test_size=0.2, random_state=1234)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "bdeaa6de-776d-4537-b798-3baeae457058",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "主成分贡献率:\n",
      "[0.469 0.265 0.141 0.057 0.043 0.02  0.004 0.   ]\n",
      "主成分累计贡献率:\n",
      "[0.469 0.734 0.876 0.932 0.975 0.996 1.    1.   ]\n"
     ]
    }
   ],
   "source": [
    "# 主成分分析\n",
    "pca = PCA()\n",
    "pca_result = pca.fit_transform(X_train)\n",
    "vr = pca.explained_variance_ratio_# 获取主成分贡献率\n",
    "print('主成分贡献率:')\n",
    "print(np.around(vr, decimals=3)) #输出贡献率\n",
    "cvr = np.cumsum(vr) # 计算累计贡献率\n",
    "print('主成分累计贡献率:')\n",
    "print(np.around(cvr, decimals=3)) #输出累计贡献率"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "a27a5bdb-bce7-425c-a56c-ac3b7b4da06d",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAi4AAAGtCAYAAAAxhv80AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8pXeV/AAAACXBIWXMAAA9hAAAPYQGoP6dpAABQ9klEQVR4nO3de1yUdd4//tdcM4CDIAcFRRsmBiHT7LDetGaM4dJubbethaOg3tuJvtVt2a62brm2W+0h282g05a1y6a7rTCEU9617apLEjNbVlqZhjWACKOC44GjwgBzXb8/+M0VE4MwyDDM8Ho+Hjxyruti/HzUnJefw/ujkCRJAhEREVEAEPzdACIiIqLBYnAhIiKigMHgQkRERAGDwYWIiIgCBoMLERERBQwGFyIiIgoYDC5EREQUMFT+bsBwEkURx48fR2RkJBQKhb+bQ0RERIMgSRJaW1sxdepUCML5x1SCKrgcP34cGo3G380gIiKiIbDZbLjooovO+0xQBZfIyEgAPR2fMGGCn1tDREREg9HS0gKNRiN/jp9PUAUX1/TQhAkTGFyIiIgCzGCWeXBxLhEREQUMBhciIiIKGAwuREREFDAYXIiIiChgMLgQERFRwGBwISIiooDB4EJEREQBg8GFiIiIAgaDCxEREQWMoKqc6ytOpxNmsxn19fVISEiAXq+HUqn0d7OIiIjGHAaXAZhMJqxevRp1dXXytcTEROTn5yMrK8uPLSMiIhp7GFzOw2QywWAwIDU1Fbm5uYiPj4fdbofFYoHBYEBJSQnDCxER0QhSSJIk+bsRw6WlpQVRUVFobm6+4EMWnU4ndDod1Go1srOzIQjfLAcSRRFGoxEdHR2orq7mtBEREdEF8Obzm4tz+2E2m1FXV4f09HS30AIAgiAgPT0dtbW1MJvNfmohERHR2MPg0o/6+noAQHx8vMf7ruuu54iIiMj3GFz6kZCQAACw2+0e77uuu54jIiIi32Nw6Yder0diYiIsFgtEUXS7J4oiLBYLtFot9Hq9n1pIREQ09jC49EOpVCI/Px9WqxVGoxE2mw0OhwM2mw1GoxFWqxV5eXlcmEtERDSCuKtoAJ7quGi1WuTl5XErNBER0TDw5vObwWUQWDmXiIjId7z5/GYBukFQKpXIyMjwdzOIiIjGPK5xISIiooDB4EJEREQBg8GFiIiIAgaDCxEREQUMBhciIiIKGAwuREREFDAYXIiIiChg+C24bN++HTqdDiqVCt/97ndx6NAhAMDBgweRlpaGmJgYrF27FkFUH4+IiIgukF+CS3V1Ne6880489dRTOHbsGLRaLe6++244HA7cfPPNmDNnDvbu3YuKigps3rzZH00kIiKiUcgvweXQoUN48sknsXTpUkyePBn/+7//i7179+Kf//wnmpubkZeXh+TkZDz55JMoKCjwRxOJiIhoFPJLyf+FCxe6vf76668xffp07N+/H3PnzkV4eDgA4PLLL0dFRUW/7+NwOOBwOOTXLS0tvmkwERERjQp+X5zb2dmJjRs3YuXKlWhpaUFSUpJ8T6FQQKlUorGx0eP3btiwAVFRUfKXRqMZqWYTERGRH/g9uDz66KOIiIjAPffcA5VKhbCwMLf748aNw7lz5zx+77p169Dc3Cx/2Wy2kWgyERER+YlfT4fetWsXNm3ahD179iAkJASxsbE4ePCg2zOtra0IDQ31+P1hYWF9gg4REREFL7+NuBw+fBgrVqzAyy+/jJkzZwIA0tLSsGfPHvmZI0eOwOFwIDY21l/NJCIiolHEL8Glvb0dCxcuxC233IJFixahra0NbW1t0Ov1aG5uxl//+lcAwFNPPYXrr78eSqXSH80kIiKiUUYh+aHC21tvvYVbb721z/Wamhp8/vnnWL58OSIjI+F0OvH+++9j1qxZg3rflpYWREVFobm5GRMmTBjuZhMREZEPePP57ZfgMpBjx45h7969mDdvHuLi4gb9fQwuREREgcebz2+/Ls7tz7Rp0zBt2jR/N4OIiIhGGb9vhyYiIiIaLAYXIiIiChgMLkRERBQwGFyIiIgoYDC4EBERUcBgcCEiIqKAweBCREREAYPBhYiIiAIGgwsREREFDAYXIiIiChgMLkRERBQwGFyIiIgoYDC4EBERUcBgcCEiIqKAweBCREREAYPBhYiIiAIGgwsREREFDAYXIiIiChgMLkRERBQwGFyIiIgoYDC4EBERUcBgcCEiIqKAweBCREREAYPBhYiIiAIGgwsREREFDAYXIiIiChgMLkRERBQwGFyIiIgoYDC4EBERUcBgcCEiIqKAweBCREREAYPBhYiIiAIGgwsREREFDAYXIiIiChgMLkRERBQwGFyIiIgoYDC4EBERUcBgcCEiIqKAweBCREREAYPBhYiIiAIGgwsR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3eO5Yenp6aitreUOP6IAM+qCy6FDhzBr1iwUFhaioqICISEhuPfeez0+u2HDBkRFRclfGo1mhFvb16effnreQxb1ej1EUYQkSXjppZf81Eqi4FdfXw9g4HPDXM8RUWAYdcFlxYoV2LNnD9LS0pCUlIQXX3wRO3fu9Diasm7dOjQ3N8tfNpvNDy12197eDmDgvywB97ONiGh4JSQkABj43DDXc0QUGEZdcPm26OhoiKLo8V9FYWFhmDBhgtuXv1188cUABv7LEgCSk5NHoklEY5Jer0diYiIsFovHc8MsFgu0Wi30er2fWkhEQzHqgsuaNWtQXFwsv/7kk08gCMKomAYajP/5n/+R17D0d8hiaGgoFApFv1NgRHThlEol8vPzYbVaYTQa3c4NMxqNsFqtyMvL48JcogAz6rZDX3nllVi/fj2mTJmC7u5urFq1CnfccQfCw8P93bRBCQkJgSRJqKysRGFhIebPny/vKjKbzbBarfKzH3zwATIzM/3YWqLglpWVhZKSEqxevdqtGKRWq+VWaKIANeqCy2233YZDhw5h0aJFiIyMxK233oonn3zS380aNLvdLlfFra6ulrc/Az2Lc5VKJZxOJwCgrKyMwYXIx7KysrBo0SJWziUKEqMuuAA9u4U2bNjg72YMiWuhnyAIiI+PR2trK86ePQugZ6ooKioK4eHhOHHiRJ+pJCLyDaVSiYyMDH83g4iGwagMLoFMr9cjMjISra2taGhoOG8ROrVa7efWEhERBZZRtzg30CmVSoSHh5+3CF1KSgoEQcCWLVv83VwiIqKAwuDiA83NzectQjd//nyIoogjR474p4FEREQBisHFB1yLbwcqQtfd3S0/S0RERANjcPEB126FwRSh40GLREREg8fg4gNOpxOCIMBsNvdbhM41hcTgQkRENHgMLj4iiiKsViuKiorcKnYWFRXBarXKgYZboomIiAaP26F9wDWakpmZiX379rlV7IyOjkZmZiZKS0sBALGxsX5pIxERUSBicPERQRBQV1eHBx54ADabDW1tbYiIiIBGo4HRaERoaCg6OzsZXIiIiLzAqSIfGDduHERRRGVlJYqLi6FSqZCamgqVSoXi4mJUVlais7MTAPDWW2/5t7FEREQBhCMuPjBu3Di0trZi8uTJsNvtfaaKEhIS5JL/NpvNjy0lIiIKLAwuPuAqQHfTTTdh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qj729tBDD+HWW2/F3LlzAQTXn9kvvvgCkiThyiuvhFqtxo033oi6urqg6qPLn/70J3z++edISkrCO++8g66urqDsp0tHRweee+45rFu3Lqj76QmDywhraWlBUlKS/FqhUECpVKKxsdGPrRoeOp2uz7Vg7m9nZyc2btyIlStXBmU/9+/fj8mTJ2Pnzp149tlng7KPu3fvRmlpKX7/+9/L14Kpn4cOHcKsWbNQWFiIiooKhISE4N577w2qPgJAW1sbHn30UaSkpODo0aPIy8vD/Pnzg66fvW3duhVz587FxRdfHNT99ITBZYSpVKo+pZnHjRuHc+fO+alFvhXM/X300UcRERGBe+65Jyj7efnll6O0tBSzZs3CnXfeGXR97OjowL333ouXX37Z7VTdYOrnihUrsGfPHqSlpSEpKQkvvvgidu7cCVEUg6aPAGAymXD27Fm89957+OUvf4mdO3eiqakJf/nLX4Kqn71t2rRJHv0Npj+zg8HgMsJiY2Nx8uRJt2utra0IDQ31U4t8K1j7u2vXLmzatAlbt25FSEhIUPZToVDgqquuwubNm7F9+/ag6+NvfvMbpKWl4b//+7/drgdbP3uLjo6GKIqYMmVKUPXx6NGj+O53v4vY2FgAPR/kl19+OTo6OoKqny5VVVWoqqrC9ddfDyC4/8x6wuAywtLS0rBnzx759ZEjR+BwOOT/4YJNMPb38OHDWLFiBV5++WXMnDkTQHD187333sPatWvl1yqVCgAwY8aMoOkj0DPUvn37dkRHRyM6Ohpbt27FypUrsWXLlqDp55o1a1BcXCy//uSTTyAIAmbPnh00fQR61mW1t7e7XautrcUzzzwTVP10KS4uxsKFCxESEgIguP7+GRR/rw4ea7q6uqS4uDhpy5YtkiRJ0r333istXLjQz60aXui1qyjY+nvu3Dnp0ksvlf7f//t/Umtrq/zV2dkZNP08duyYFBkZKb3yyitSXV2ddNttt0k33HBD0P1e2mw2qaamRv5avHix9PTTT0snT54Mmn5u2bJFmj59uvT+++9LpaWl0owZM6S77ror6H4vT58+LUVFRUkvv/yyZLPZpOeee04KCwuTKisrg6qfLnq9XvrLX/4ivw6238+BMLj4wZtvvimp1WopPj5emjhxonTw4EF/N2lY9Q4ukhRc/X3zzTclAH2+ampqgqqf//rXv6RL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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 绘制散点图\n",
    "plt.scatter(pca_result[:,0],pca_result[:,1],edgecolor='black',facecolor='grey')\n",
    "plt.xlabel('第一主成分')\n",
    "plt.ylabel('第二主成分')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "67a6d656-7c03-40de-9354-7a94588af4b9",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "发行价格(元): -1543051.301\n",
      "每股面值(元): -526375.285\n",
      "总发行规模(股): 33834382.072\n",
      "公开招股数量(股): 32945612.762\n",
      "发行前每股净资产(元): -1610453.395\n",
      "实际发行总量(股): 33935023.500\n",
      "每股发行费用(元): -2668329.679\n",
      "公司招股时注册资本(元): 31698332.872\n"
     ]
    }
   ],
   "source": [
    "# 主成分回归\n",
    "pca = PCA(n_components=2) #提取两个主成分\n",
    "X_pca = pca.fit_transform(X_train)\n",
    "reg = LinearRegression()\n",
    "reg.fit(X_pca, y_train) #以主成分为输入变量建立回归模型\n",
    "coef_pca = reg.coef_\n",
    "coef_original = np.dot(pca.components_.T, coef_pca) # 还原回归系数\n",
    "feature_names = data_cleaned.iloc[:,1:].columns\n",
    "for i, (coef, name) in enumerate(zip(coef_original, feature_names)):\n",
    "    print(f'{name}: {coef:.3f}') # 输出原始变量系数及对应的变量名"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "131a1de2-5800-4bbb-9953-48f6f3ecf54e",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "测试集R方: 0.748\n"
     ]
    }
   ],
   "source": [
    "# 使用训练好的PCA模型将测试集数据进行降维\n",
    "X_pca_test = pca.transform(X_test)\n",
    "# 使用训练好的线性回归模型对降维后的测试集数据进行预测\n",
    "y_pred = reg.predict(X_pca_test)\n",
    "# 计算并输出R方值\n",
    "r2 = r2_score(y_test, y_pred)\n",
    "print(f'测试集R方: {r2:.3f}')"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "4d824123",
   "metadata": {},
   "source": [
    "## 6.3因子分析\n",
    "### 6.3.1因子分析的基本概念\n",
    "### 6.3.2因子分析案例实践"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "88487883",
   "metadata": {},
   "outputs": [],
   "source": [
    "import pandas as pd\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "plt.rcParams['font.sans-serif'] = ['SimHei']\n",
    "plt.rcParams['axes.unicode_minus'] = False\n",
    "from sklearn.model_selection import train_test_split#用于数据集划分\n",
    "from sklearn.metrics import mean_squared_error, r2_score,silhouette_score#性能度量指标计算模块\n",
    "from sklearn.preprocessing import StandardScaler#数据标准化模块\n",
    "from sklearn.linear_model import LinearRegression#线性回归模型模块\n",
    "from sklearn.decomposition import PCA\n",
    "from factor_analyzer import FactorAnalyzer\n",
    "from sklearn.cluster import KMeans"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "bbe22481",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>首日开盘价(元)</th>\n",
       "      <th>首日收盘价(元)</th>\n",
       "      <th>首日交易股数(股)</th>\n",
       "      <th>首日交易金额(元)</th>\n",
       "      <th>首日个股回报率</th>\n",
       "      <th>首日换手率</th>\n",
       "      <th>首日的市场回报率</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>29.50</td>\n",
       "      <td>27.75</td>\n",
       "      <td>174085055</td>\n",
       "      <td>4.859102e+09</td>\n",
       "      <td>177.5000</td>\n",
       "      <td>54.0</td>\n",
       "      <td>-9.6237</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>7.72</td>\n",
       "      <td>8.75</td>\n",
       "      <td>187469932</td>\n",
       "      <td>1.512258e+09</td>\n",
       "      <td>48.8095</td>\n",
       "      <td>47.0</td>\n",
       "      <td>-4.8196</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>7.27</td>\n",
       "      <td>6.70</td>\n",
       "      <td>107249756</td>\n",
       "      <td>7.344126e+08</td>\n",
       "      <td>31.3725</td>\n",
       "      <td>43.0</td>\n",
       "      <td>-5.8192</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>6.00</td>\n",
       "      <td>5.85</td>\n",
       "      <td>55675391</td>\n",
       "      <td>3.292603e+08</td>\n",
       "      <td>7.1429</td>\n",
       "      <td>36.0</td>\n",
       "      <td>1.1369</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>18.00</td>\n",
       "      <td>17.42</td>\n",
       "      <td>68952797</td>\n",
       "      <td>1.180499e+09</td>\n",
       "      <td>93.9866</td>\n",
       "      <td>57.0</td>\n",
       "      <td>-1.0714</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   首日开盘价(元)  首日收盘价(元)  首日交易股数(股)     首日交易金额(元)   首日个股回报率  首日换手率  首日的市场回报率\n",
       "0     29.50     27.75  174085055  4.859102e+09  177.5000   54.0   -9.6237\n",
       "1      7.72      8.75  187469932  1.512258e+09   48.8095   47.0   -4.8196\n",
       "2      7.27      6.70  107249756  7.344126e+08   31.3725   43.0   -5.8192\n",
       "3      6.00      5.85   55675391  3.292603e+08    7.1429   36.0    1.1369\n",
       "4     18.00     17.42   68952797  1.180499e+09   93.9866   57.0   -1.0714"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#读入数据\n",
    "data = pd.read_excel('IPO首日表现.xlsx')\n",
    "data.head()#数据预览"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "d5c89cd6",
   "metadata": {},
   "outputs": [],
   "source": [
    "#数据标准化\n",
    "scaler = StandardScaler()\n",
    "data_scaled = scaler.fit_transform(data)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "006bd5ba",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[0.326 0.551 0.721 0.849 0.95  0.998 1.   ]\n"
     ]
    }
   ],
   "source": [
    "#因子分析：确定公因子个数\n",
    "# 因子模型拟合\n",
    "fa = FactorAnalyzer(rotation= None)\n",
    "fa.fit(data_scaled)\n",
    "# 获取特征值\n",
    "eigenvalues = fa.get_eigenvalues()[0]\n",
    "# 获取累计贡献率\n",
    "cvr = np.cumsum(eigenvalues/np.sum(eigenvalues))\n",
    "print(np.around(cvr, decimals=3))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "65c60d8f",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "因子载荷矩阵：\n",
      "                  0         1         2\n",
      "首日开盘价(元)   0.998467  0.031833 -0.014024\n",
      "首日收盘价(元)   0.982591  0.020329  0.015169\n",
      "首日交易股数(股) -0.084594  0.678684 -0.030062\n",
      "首日交易金额(元)  0.208975  0.919667 -0.005959\n",
      "首日个股回报率    0.141182  0.048309  0.987307\n",
      "首日换手率      0.237001  0.205467  0.160441\n",
      "首日的市场回报率  -0.015200 -0.012369  0.193017\n"
     ]
    }
   ],
   "source": [
    "# 进行因子分析\n",
    "fa = FactorAnalyzer(rotation= 'varimax',n_factors=3)\n",
    "fa.fit(data_scaled)\n",
    "# 输出因子载荷矩阵\n",
    "feature_names = data.columns\n",
    "loadings = pd.DataFrame(fa.loadings_,index = feature_names) \n",
    "print('因子载荷矩阵：')\n",
    "print(loadings)\n",
    "# 计算因子得分\n",
    "factors_scores = fa.transform(data_scaled)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "55aa302f",
   "metadata": {},
   "source": [
    "## 6.3K均值聚类\n",
    "### 6.3.1K均值聚类的基本原理\n",
    "### 6.3.2K均值聚类案例实践"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "a19b393a",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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5557zuwobrdz5046derE22+/TUpKCt7e3owaNcrsWG516tQpnnjiCdq1a8eRI0eYO3cu/fr1o6CgwOxobrds2TJ69+5Nq1atzI7iVrGxsdxyyy306NGDkJAQfvjhB2bPnm12LLfp1q0bn3zyCcbPl7tbvHgxvXr1qvK9n+qqBQsW8Le//a3ca0lJSfTu3Rt/f38A4uLiSElJcWsuFZ4aFhcXx5dffkmnTp245557zI7jNgUFBYwaNYr58+fXy5vl3XHHHXz//ffEx8cTExPDiy++yJo1a3A4HGZHc5sPP/yQvLw81q5dy5NPPsmaNWs4efIkS5cuNTua273yyiuMHj3a7Bhu9/3337NixQp++OEHcnNzuf3227nhhhvKCoCnGz9+PEVFRfTs2ZO+ffvy3HPP8de//tXsWDXuXKdtHQ4HMTExZc8tFgtWq9WtUz1UeGqYxWKhe/fuLFmyhI8//rjezON5+umniY+PZ/DgwWZHqRVCQkJwuVxkZGSYHcVtjhw5whVXXEFoaChQOowfFxdHamqqycnca9++fezbt4/+/fubHcXt3n33XYYPH06vXr0ICAjgmWee4aeffiIpKcnsaG4RGhrKt99+y3vvvUdcXBwdOnRgxIgRZscyhc1mO+u2En5+fuTn57stgwpPDVm7di0TJkwoe37mnK2XV/34kS9btoyPP/64bMLmsmXLePDBB3nwwQfNjuYWjz76KO+9917Z8x9//BEvLy+io6NNTOVe0dHRnD59utxrBw8epGXLliYlMsd7773HkCFD8Pb2NjuK25WUlHDs2LGy57m5ueTl5eF0Ok1M5X7NmjXjww8/ZPr06WXzeOqb0NBQjh8/Xu613NxcfHx83JbBs2dOmahDhw4MHTqUdu3acf311/PEE08wcOBAjz93e8bXX39NSUlJ2fPx48fTu3dv/vSnP5kXyo26devG448/TkREBCUlJYwZM4Y//elPZeev64PBgwczZswYXnnlFYYMGcKHH37I1q1bGTRokNnR3Gr16tX16nT2r/3ud7/jz3/+M//6178IDw/ntddeIzw8nLi4OLOjudULL7xQ9plQX8XHx/Paa6+VPT9w4ACFhYVlI8Bu4dZF8PXM6tWrjY4dOxqBgYHGLbfcYmRmZpodyTR33313vbsOz8SJE42QkBAjOjraePjhh41Tp06ZHcnt/ve//xl9+/Y1GjRoYMTExBgfffSR2ZHcKj8/3/Dx8TF27txpdhRTuFwuY8qUKUaLFi0Mb29vo3v37kZiYqLZsdwqJyfHCA0NNTZu3Gh2FLcDyq7DU1xcbISFhRn/+c9/DMMwjFGjRhlDhgxxax7dLV1ERESqncViITU1tWx14vLlyxkxYgSBgYE4nU42bNhAp06d3JdHhUdERETcIS0tjcTERPr27UtYWJhbv7cKj4iIiHi8+rFkSEREROo1FR4RERHxeCo8IiIi4vFUeERERMTjqfCIiIiIx1PhERGPtGTJErp161b2fPbs2YSHh3P06FHzQomIaXRrCRHxeFu3buXJJ5/ko48+IiIiwuw4ImICjfCIiEfLz8/n9ttvZ8yYMfXuPl4i8gsVHhHxaI8++iiBgYE8++yzZkcRERPplJaIeKw9e/aQlJREfHw83t7eZscRERNphEdEPNbp06eZOXMm27ZtY8WKFWbHERETqfCIiMeKjY1lwoQJ3H///UyePBndOlCk/lLhERGPdeY01qRJk9i5cycfffSRyYlExCwqPCLi8Zo1a8Zf/vIXpkyZolEekXpKhUdE6oWJEyeyd+9e3n//fbOjiIgJLIZ+3REREREPpxEeERER8XgqPCIiIuLxVHhERETE46nwiIiIiMdT4RERERGPp8IjIiIiHk+FR0RERDyeCo+IiIh4PBUeERER8XgqPCIiIuLx/j83H+gmVAR9BwAAAABJRU5ErkJggg==",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 确定聚类数目\n",
    "silhouette_scores = []\n",
    "for n_clusters in range(3, 11):\n",
    "    kmeans = KMeans(n_clusters=n_clusters,n_init=10)\n",
    "    cluster_labels = kmeans.fit_predict(data_scaled)\n",
    "    silhouette_avg = silhouette_score(data_scaled, cluster_labels)\n",
    "    silhouette_scores.append(silhouette_avg)\n",
    "# 绘制轮廓系数随聚类数目变化的折线图\n",
    "plt.plot(range(3, 11), silhouette_scores, marker='o')\n",
    "plt.xlabel('K')\n",
    "plt.ylabel('轮廓系数')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "de19f135",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "     首日开盘价(元)  首日收盘价(元)  首日交易股数(股)  首日交易金额(元)   首日个股回报率     首日换手率  首日的市场回报率\n",
      "类别0 -0.161921 -0.161483  -0.060889  -0.098109 -0.060331 -0.042234 -0.007626\n",
      "类别1 -0.442371 -0.480611  10.046465   8.066080 -0.184196  0.434416 -0.089388\n",
      "类别2  3.043282  3.039851  -0.097150   0.830780  1.136277  0.726941  0.151663\n",
      "   index  count\n",
      "0      0   4708\n",
      "1      2    255\n",
      "2      1     31\n"
     ]
    }
   ],
   "source": [
    "# 执行K均值聚类\n",
    "kmeans = KMeans(n_clusters=3,random_state=123,n_init=10,init='k-means++')\n",
    "cluster_labels = kmeans.fit_predict(data_scaled)\n",
    "cluster_centers = kmeans.cluster_centers_\n",
    "# 将聚类中心转化为DataFrame\n",
    "cluster_centers_df = pd.DataFrame(cluster_centers, columns=data.columns)\n",
    "cluster_centers_df.index = ['类别0', '类别1', '类别2']\n",
    "print(cluster_centers_df)\n",
    "cluster_counts = pd.Series(cluster_labels).value_counts().reset_index()\n",
    "print(cluster_counts)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "87cc40b1",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 提取主成分\n",
    "pca = PCA(n_components=2)\n",
    "data_pca = pca.fit_transform(data_scaled)\n",
    "# 绘制聚类效果图\n",
    "# 定义不同形状\n",
    "markers = ['o', '^', 's']\n",
    "# 绘制散点图\n",
    "for i, marker in zip(range(len(markers)), markers):\n",
    "    plt.scatter(data_pca[cluster_labels==i, 0], data_pca[cluster_labels==i, 1], \n",
    "            marker=marker, label=f'类别 {i}',\n",
    "            edgecolor='black')\n",
    "plt.legend()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "7da261ca",
   "metadata": {},
   "source": [
    "## 本章实训——HKD_CNY数据的聚类分析"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "id": "5c48edcc",
   "metadata": {},
   "outputs": [],
   "source": [
    "import warnings\n",
    "warnings.filterwarnings(\"ignore\")\n",
    "import pandas as pd\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "plt.rcParams['font.sans-serif'] = ['SimHei']\n",
    "plt.rcParams['axes.unicode_minus'] = False\n",
    "from sklearn.decomposition import PCA\n",
    "from factor_analyzer import FactorAnalyzer\n",
    "from sklearn.cluster import KMeans\n",
    "from sklearn.metrics import silhouette_score\n",
    "from sklearn.preprocessing import StandardScaler"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "id": "580dfa85",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>日期</th>\n",
       "      <th>收盘</th>\n",
       "      <th>开盘</th>\n",
       "      <th>高</th>\n",
       "      <th>低</th>\n",
       "      <th>涨跌幅</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>2024-05-31</td>\n",
       "      <td>0.9261</td>\n",
       "      <td>0.9252</td>\n",
       "      <td>0.9268</td>\n",
       "      <td>0.9251</td>\n",
       "      <td>0.12%</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2024-05-30</td>\n",
       "      <td>0.9251</td>\n",
       "      <td>0.9277</td>\n",
       "      <td>0.9280</td>\n",
       "      <td>0.9252</td>\n",
       "      <td>-0.28%</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>2024-05-29</td>\n",
       "      <td>0.9277</td>\n",
       "      <td>0.9275</td>\n",
       "      <td>0.9281</td>\n",
       "      <td>0.9272</td>\n",
       "      <td>0.03%</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>2024-05-28</td>\n",
       "      <td>0.9274</td>\n",
       "      <td>0.9279</td>\n",
       "      <td>0.9283</td>\n",
       "      <td>0.9274</td>\n",
       "      <td>-0.04%</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>2024-05-27</td>\n",
       "      <td>0.9278</td>\n",
       "      <td>0.9271</td>\n",
       "      <td>0.9281</td>\n",
       "      <td>0.9268</td>\n",
       "      <td>0.08%</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "           日期      收盘      开盘       高       低     涨跌幅\n",
       "0  2024-05-31  0.9261  0.9252  0.9268  0.9251   0.12%\n",
       "1  2024-05-30  0.9251  0.9277  0.9280  0.9252  -0.28%\n",
       "2  2024-05-29  0.9277  0.9275  0.9281  0.9272   0.03%\n",
       "3  2024-05-28  0.9274  0.9279  0.9283  0.9274  -0.04%\n",
       "4  2024-05-27  0.9278  0.9271  0.9281  0.9268   0.08%"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#读入数据\n",
    "data = pd.read_csv('HKD_CNY历史数据.csv')\n",
    "data.head()#数据预览#数据预处理"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "id": "5069fddc",
   "metadata": {},
   "outputs": [],
   "source": [
    "#数据预处理\n",
    "data['涨跌幅'] = data['涨跌幅'].str.replace('%', '').astype(float)\n",
    "# 将中文日期列转换为时间数据\n",
    "data['日期'] = pd.to_datetime(data['日期'], format='%Y-%m-%d')\n",
    "# 按时间升序排列\n",
    "data = data.sort_values(by='日期', ascending=True)\n",
    "#数据标准化\n",
    "scaler = StandardScaler()\n",
    "data_scaled = scaler.fit_transform(data.drop(columns=['日期']))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "id": "f10f8245",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[0.785 0.991 0.999 1.    1.   ]\n"
     ]
    }
   ],
   "source": [
    "# 确定提取公因子的个数\n",
    "fa = FactorAnalyzer()\n",
    "fa.fit(data_scaled)\n",
    "# 获取特征值\n",
    "eigenvalues = fa.get_eigenvalues()[0]\n",
    "# 获取累计贡献率\n",
    "cvr = np.cumsum(eigenvalues/np.sum(eigenvalues))\n",
    "print(np.around(cvr, decimals=3))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "id": "22a74f06",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "因子载荷:\n",
      "[[ 0.997  0.086]\n",
      " [ 0.971 -0.239]\n",
      " [ 0.981 -0.076]\n",
      " [ 0.983 -0.064]\n",
      " [-0.056  0.996]]\n"
     ]
    }
   ],
   "source": [
    "#因子模型拟合\n",
    "fa = FactorAnalyzer(n_factors=2, rotation='varimax')\n",
    "fa.fit(data_scaled)\n",
    "print(\"因子载荷:\")\n",
    "print(fa.loadings_.round(3))\n",
    "factors_scores = fa.transform(data_scaled)# 计算因子得分"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "id": "a59170b2",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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LVJbWwt7e/tOz1mwYAGeeOIJDB069Ir3CgoKcOeddxpClIuLC/r374/c3NyrXsvBwQGurq4dHnR9w/u6wbOXA2obW3Awp0LqcoiIiIxmdOAJDg5GYWEhGhoa8MEHH+Bvf/sbAMDZ2RkzZ87E448/jscffxzPPPMMjh8/fs1rRUVF4fDhw4bneXl50Ol0cHd37/ScLVu2YO3atVCr1VCr1di/fz+mTJmC5cuXIzAwEJcuXTIc29raioKCgivG+dDNkcsETAz3AQDsOsluLSIishxGB56AgABs3rwZf/7znzFw4EAkJSXhwIED6NWrF4YNG4aRI0di5MiRKCoqwj/+8Y9rXis2NhYajQabN28GACxfvhxxcXGQy+XQarVobr5yz6bc3FwcP34c6enpSE9Px2233YYPP/wQc+bMwYMPPojt27fjyy+/REFBARITE6HT6TB69Oiu/TTouiZF+AEAfjhZCn2r8WsnERERSUlx/UPaqNVquLq64vTp09i6dStCQkKwbt06uLq64o9//CM8PT0BAB4eHli5cuW1P1ShwPr16zFjxgwsWrQIer0eKSkpANpmbK1Zswb33Xdfh3P+dxq6UqmEr6+vocXnP//5D15++WWcPn0aISEh+Pbbb+Hi4mLs7ZGRRvZzh8rRDpX1TUjNrUJ0iIfUJREREV2XIBq5xHF1dTXGjh2LlJQU3Hnnnairq8PMmTPxzjvvIDU1FRqNBhEREaitrUWvXr2M2jG9sLAQaWlpiImJgZeX103fzI3qyvbyBLywNQPbjhbgT9F98eq9EVKXQ0RENqor399Gd2k5Ojqivr4ebm5uWLhwIaqqqvDQQw+hrKwMGo0GjzzyCFasWAEXFxejwg7QtmrzvffeK2nYoa5rX4Rw18lStLJbi4iILIDRgcfOzs6wQF98fDzeeecd9O/fH66urqioqMDnn3+Od955xzAuh6zX6FBPONvLUaJtRHpBjdTlEBERXZfRgUcul+Of//wngLZxOg899BAAID09HePGjUNYWBh27NiB5557DmVl3GDSmint5LgjrG22FhchJCIiS9ClvbRmz559xWu/n/odERGBX3/9Fd7e3jdfGZm19m6tpMziLu10T0REJIUuBR5j9OnTp7svSWZo3AAvOChkyK+6hKxi7kVGRETmzejAo9fr8fbbbyM7Oxt//OMfcezYMcN7H374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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 寻找最佳聚类数目\n",
    "silhouette_scores = []\n",
    "for n_clusters in range(3, 11):\n",
    "    kmeans = KMeans(n_clusters=n_clusters,n_init=5,random_state=123)\n",
    "    cluster_labels = kmeans.fit_predict(data_scaled)\n",
    "    silhouette_avg = silhouette_score(data_scaled, cluster_labels)\n",
    "    silhouette_scores.append(silhouette_avg)\n",
    "# 绘制轮廓系数随聚类数目变化的折线图\n",
    "plt.plot(range(3, 11), silhouette_scores, marker='o')\n",
    "plt.xlabel('K')\n",
    "plt.ylabel('轮廓系数')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "id": "d198cf70",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "        收盘     开盘      高      低    涨跌幅\n",
      "类别0  0.924  0.900  0.941  0.893 -0.038\n",
      "类别1 -0.680 -0.599 -0.686 -0.610 -0.176\n",
      "类别2 -1.680 -2.105 -1.760 -1.975  1.585\n",
      "   index  count\n",
      "0      1     52\n",
      "1      0     51\n",
      "2      2      7\n"
     ]
    }
   ],
   "source": [
    "# 进行K均值聚类\n",
    "kmeans = KMeans(n_clusters=3,random_state=123,n_init=10)\n",
    "cluster_labels = kmeans.fit_predict(data_scaled)\n",
    "cluster_centers = kmeans.cluster_centers_\n",
    "# 将聚类中心转化为数据框\n",
    "cluster_centers_df = pd.DataFrame(cluster_centers, columns=data.drop(columns = '日期').columns)\n",
    "cluster_centers_df.index = ['类别0', '类别1', '类别2']\n",
    "print(cluster_centers_df.round(3))\n",
    "cluster_counts = pd.Series(cluster_labels).value_counts().reset_index()\n",
    "print(cluster_counts)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "id": "0c557bc2",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 1600x600 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 创建一个图形对象，包含两个子图\n",
    "fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(16, 6))\n",
    "markers = ['^', 'o', 's']\n",
    "# 循环遍历每个数据点，根据类别使用不同的形状绘制第一公因子得分的散点图\n",
    "for i, label in enumerate(set(cluster_labels)):\n",
    "    ax1.scatter(data['日期'][cluster_labels == label], \n",
    "                factors_scores[cluster_labels == label, 0], \n",
    "                label=f'类别 {label}', marker=markers[i])\n",
    "# 添加轴标签和图例\n",
    "ax1.set_xlabel('日期')\n",
    "ax1.set_ylabel('第一公因子得分')\n",
    "ax1.legend()\n",
    "# 循环遍历每个数据点，根据类别使用不同的形状绘制第二公因子得分的散点图\n",
    "for i, label in enumerate(set(cluster_labels)):\n",
    "    ax2.scatter(data['日期'][cluster_labels == label], \n",
    "                factors_scores[cluster_labels == label, 1], \n",
    "                label=f'类别 {label}', marker=markers[i])\n",
    "# 添加轴标签和图例\n",
    "ax2.set_xlabel('日期')\n",
    "ax2.set_ylabel('第二公因子得分')\n",
    "ax2.legend()\n",
    "# 调整子图间距\n",
    "plt.tight_layout()\n",
    "#展示图像\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "6093ce0c",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.11.5"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
